#include <stdio.h>
#include "ADT_tanggal.h"

// {KONSTRUKTOR}
Tanggal CreateTanggal(int day, int month, int year)
// Membuat tipe data tanggal dengan kondisi awal parameter input
{
	Tanggal X;
	GetDay(X) = day;
	GetMonth(X) = month;
	GetYear(X) = year;
	return X;
}
Tanggal CreateToTanggal(char X[100])
{
	int a,b,c;
	if((X[1] == '-') && (X[3] == '-'))
	{
		a = X[0] - '0';
		b = X[2] - '0';
		c = ((X[4] - '0')*1000) + ((X[5] - '0')*100) + ((X[6] - '0')*10) +(X[7] - '0');
	}
	else if((X[1] == '-') && (X[4] == '-'))
	{
		a = X[0] - '0';
		b = ((X[2] - '0')*10) + (X[3] -'0');
		c = ((X[5] - '0')*1000) + ((X[6] - '0')*100) + ((X[7] - '0')*10) +(X[8] - '0');
	}
	else if((X[2] == '-') && (X[4] == '-'))
	{
		b = X[3] - '0';
		a = ((X[0] - '0')*10) + (X[1] -'0');
		c = ((X[5] - '0')*1000) + ((X[6] - '0')*100) + ((X[7] - '0')*10) +(X[8] - '0');
	}
	else if((X[2] == '-') && (X[5] == '-'))
	{
		a = ((X[0] - '0')*10) + (X[1] -'0');
		b = ((X[3] - '0')*10) + (X[4] -'0');
		c = ((X[6] - '0')*1000) + ((X[7] - '0')*100) + ((X[8] - '0')*10) +(X[9] - '0');
	}
	return CreateTanggal(a,b,c);
}
// {SETTER}
// Digunakan untuk menset tiap elemen dari sebuah tanggal
void SetDay(Tanggal * X, int day)
{
	GetDay(*X) = day;
}
void SetMonth(Tanggal * X, int month)
{
	GetMonth(*X) = month;
}
void SetYear(Tanggal * X, int year)
{
	GetYear(*X) = year;
}
void SetTanggal(Tanggal * X, Tanggal Y)
{
	SetDay(X, GetDay(Y));
	SetMonth(X, GetMonth(Y));
	SetYear(X, GetYear(Y));
}
// {FUNGSI LAIN}
bool IsDateEqual(Tanggal A, Tanggal B)
{
	if ((GetYear(A) == GetYear(B)) && (GetMonth(A) == GetMonth (B)) && (GetDay(A) == GetDay(B)))
		{
			return true;
		}				
	else
		{
			return false;
		}
}
bool IsDateLess(Tanggal A, Tanggal B)
{
	if(GetYear(A) != GetYear(B))
		return GetYear(A) < GetYear(B);
	else
		if(GetMonth(A) != GetMonth(B))
			return GetMonth(A) < GetMonth(B);
		else
			return GetDay(A) < GetDay(B);
}
bool IsDateMore(Tanggal A, Tanggal B)
{
	if(GetYear(A) != GetYear(B))
		return GetYear(A) > GetYear(B);
	else
		if(GetMonth(A) != GetMonth(B))
			return GetMonth(A) > GetMonth(B);
		else
			return GetDay(A) > GetDay(B);
}
